﻿using System;
using System.Web;
using System.IO;
using LdExpress;
using System.Text;
using System.Security.Cryptography;
using System.Text.RegularExpressions;
using System.Globalization;


namespace LdExpress
{
    /// <summary>
    /// Summary description for CommonFunctions.
    /// </summary>
    public class CommonFunctions
    {
        public CommonFunctions()
        {
            //
            // TODO: Add constructor logic here
            //
        }
        public static string GetNewID()
        {
            return System.Guid.NewGuid().ToString();
        }
        public static string ImagePath = "./assets/images";
        public static void BuildPager(System.Web.HttpRequest Request, int nNumOfPages, int nPage, string strPageID,
            string ContainerPage,
            out string strGeneratedTagValue)
        {
            BuildPager("", Request, nNumOfPages, nPage, strPageID, ContainerPage, out strGeneratedTagValue);
        }

        /// <summary>
        /// Build pager for a search result page
        /// </summary>
        /// <param name="strSearchKey"></param>
        /// <param name="strSearchCondition"></param>
        /// <param name="Request"></param>
        /// <param name="nNumOfPages"></param>
        /// <param name="nPage"></param>
        /// <param name="strPageID"></param>
        /// <param name="ContainerPage"></param>
        /// <param name="strGeneratedTagValue"></param>
        /// <returns></returns>
        public static void BuildPager_to_be_deleted(string strSearchKey, string strSearchCondition, System.Web.HttpRequest Request, int nNumOfPages, int nPage, string strPageID,
            string ContainerPage,
            out string strGeneratedTagValue)
        {
            strGeneratedTagValue = "";


            string strAllQueryString = "";
            foreach (string strKey in Request.QueryString.AllKeys)
            {
                if ((strKey != strPageID) && (strKey != strSearchKey)
                    && (ContainerPage.IndexOf("?" + strKey) < 0) && (ContainerPage.IndexOf("&" + strKey) < 0))
                    strAllQueryString = strAllQueryString + "&" + strKey + "=" + System.Web.HttpUtility.UrlEncode(Request.QueryString[strKey].ToString());
            }

            if ((strSearchKey != "") && (strSearchKey != null))
            {
                strAllQueryString = strAllQueryString + "&" + strSearchKey + "=" + System.Web.HttpUtility.UrlEncode(strSearchCondition);
            }

            BuildPager_Core(strAllQueryString, nNumOfPages, nPage, strPageID, ContainerPage, out strGeneratedTagValue);
        }

        public static void BuildPager(string strMoreQueryString, string strExcludedKeys, System.Web.HttpRequest Request, int nNumOfPages, int nPage, string strPageID,
            string ContainerPage,
            out string strGeneratedTagValue)
        {
            strGeneratedTagValue = "";

            strExcludedKeys = ";" + strExcludedKeys.ToLower() + ";";

            string strAllQueryString = "";
            foreach (string strKey in Request.QueryString.AllKeys)
            {
                if ((strKey != strPageID) && (ContainerPage.IndexOf("?" + strKey) < 0) && (ContainerPage.IndexOf("&" + strKey) < 0)
                    && (strMoreQueryString.IndexOf(strKey + "=") < 0)
                    && (strExcludedKeys.IndexOf(";" + strKey.ToLower() + ";") < 0))
                {
                    strAllQueryString = strAllQueryString + "&" + strKey + "=" + System.Web.HttpUtility.UrlEncode(Request.QueryString[strKey].ToString());
                }
            }

            if ((strMoreQueryString != "") && (strMoreQueryString != null))
            {
                strAllQueryString = strAllQueryString + "&" + strMoreQueryString;
            }

            BuildPager_Core(strAllQueryString, nNumOfPages, nPage, strPageID, ContainerPage, out strGeneratedTagValue);
        }

        public static void BuildPager(string strMoreQueryString, System.Web.HttpRequest Request, int nNumOfPages, int nPage, string strPageID,
            string ContainerPage,
            out string strGeneratedTagValue)
        {
            strGeneratedTagValue = "";


            string strAllQueryString = "";
            foreach (string strKey in Request.QueryString.AllKeys)
            {
                if ((strKey != strPageID) && (ContainerPage.IndexOf("?" + strKey) < 0) && (ContainerPage.IndexOf("&" + strKey) < 0)
                    && (strMoreQueryString.IndexOf(strKey + "=") < 0))
                    strAllQueryString = strAllQueryString + "&" + strKey + "=" + System.Web.HttpUtility.UrlEncode(Request.QueryString[strKey].ToString());
            }

            if ((strMoreQueryString != "") && (strMoreQueryString != null))
            {
                strAllQueryString = strAllQueryString + "&" + strMoreQueryString;
            }

            BuildPager_Core(strAllQueryString, nNumOfPages, nPage, strPageID, ContainerPage, out strGeneratedTagValue);
        }

        //private static void BuildPager_Core(string strAllQueryString, int nNumOfPages, int nPage, string strPageID,
        //    string ContainerPage,
        //    out string strGeneratedTagValue)
        //{
        //    strGeneratedTagValue = "";


        //    if (nNumOfPages > 1)
        //    {
        //        if (ContainerPage.IndexOf("?") > 0)
        //            strPageID = "&" + strPageID;
        //        else
        //            strPageID = "?" + strPageID;

        //        strGeneratedTagValue += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"cssPager\"><tr>";
        //        if (nPage != 1)
        //        {
        //            strGeneratedTagValue += "<td><a href=\"" + ContainerPage + strPageID + "=" + (nPage - 1).ToString() + strAllQueryString + "\">";
        //            strGeneratedTagValue += "<img src=\"" + ImagePath + "/move-prev.gif\" border=\"0\"></a></td>";
        //        }
        //        else
        //        {
        //            strGeneratedTagValue += "<td><img src=\"" + ImagePath + "/move-prev.gif\" border=\"0\"></td>";
        //        }
        //        strGeneratedTagValue += "<td>&nbsp;";
        //        int nCount = 0;
        //        for (int i = 1; i <= nNumOfPages; i++)
        //        {
        //            nCount++;
        //            if (i != nPage)
        //            {
        //                strGeneratedTagValue += "<a href=\"" + ContainerPage + strPageID + "=" + i.ToString() + strAllQueryString + "\">";
        //                strGeneratedTagValue += i.ToString() + "</a>&nbsp;";
        //            }
        //            else
        //            {
        //                strGeneratedTagValue += i.ToString() + "&nbsp;";
        //            }
        //            if (nCount == 40)
        //            {
        //                strGeneratedTagValue += "<br>";
        //                nCount = 0;
        //            }
        //        }
        //        strGeneratedTagValue += "</td>";

        //        if (nPage != nNumOfPages)
        //        {
        //            strGeneratedTagValue += "<td><a href=\"" + ContainerPage + strPageID + "=" + (nPage + 1).ToString() + strAllQueryString + "\">";
        //            strGeneratedTagValue += "<img src=\"" + ImagePath + "/move-next.gif\" border=\"0\"></a></td>";
        //        }
        //        else
        //        {
        //            strGeneratedTagValue += "<td><img src=\"" + ImagePath + "/move-next.gif\" border=\"0\"></td>";
        //        }
        //        strGeneratedTagValue += "</tr></table>";
        //    }
        //}


        private static void BuildPager_Core(string strAllQueryString, int nNumOfPages, int nPage, string strPageID,
           string ContainerPage,
           out string strGeneratedTagValue)
        {
            strGeneratedTagValue = "";


            if (nNumOfPages > 1)
            {
                if (ContainerPage.IndexOf("?") > 0)
                    strPageID = "&" + strPageID;
                else
                    strPageID = "?" + strPageID;

                strGeneratedTagValue += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"cssPager\"><tr>";
                int nDiv = nPage / 20;
                if (nPage % 20 == 0 && nPage > 0)
                    nDiv = nDiv - 1;
                if (nDiv > 0)
                {
                    strGeneratedTagValue += "<td>";
                    strGeneratedTagValue += "<a href=\"" + ContainerPage + strPageID + "=1" + strAllQueryString + "\">";
                    strGeneratedTagValue += "<img src=\"" + ImagePath + "/player_start.png\" class=\"startend\" style=\"cursor:pointer\"></a>";
                    strGeneratedTagValue += "<a href=\"" + ContainerPage + strPageID + "=" + ((nDiv - 1) * 20 + 1).ToString() + strAllQueryString + "\">";
                    strGeneratedTagValue += "<img src=\"" + ImagePath + "/prev.gif\" style=\"border:1px solid;cursor:pointer;\"></a>";
                    strGeneratedTagValue += "</td>";
                }
                else
                {
                    strGeneratedTagValue += "<td>";
                    strGeneratedTagValue += "<img src=\"" + ImagePath + "/player_start_gray.png\" class=\"startend\">";
                    strGeneratedTagValue += "<img src=\"" + ImagePath + "/prev_gray.png\" style=\"border:1px solid;\">";
                    strGeneratedTagValue += "</td>";
                }
                strGeneratedTagValue += "<td>&nbsp;";
                int nCount = 0;
                int nEnd = nNumOfPages;
                if (nDiv == 0 && nNumOfPages <= 20)
                    nEnd = nNumOfPages;
                else
                {
                    if (nDiv < nNumOfPages / 20)
                        nEnd = (nDiv + 1) * 20;
                    else
                        nEnd = nNumOfPages;
                }
                int nStart = nDiv * 20 + 1;
                for (int i = nStart; i <= nEnd; i++)
                {
                    nCount++;
                    if (i != nPage)
                    {
                        strGeneratedTagValue += "<span class=\"cssPagerItem\"><a href=\"" + ContainerPage + strPageID + "=" + i.ToString() + strAllQueryString + "\">";
                        strGeneratedTagValue += i.ToString() + "</a></span>&nbsp;";
                    }
                    else
                    {
                        strGeneratedTagValue += i.ToString() + "&nbsp;";
                    }
                    if (nCount == 40)
                    {
                        strGeneratedTagValue += "<br>";
                        nCount = 0;
                    }
                }
                strGeneratedTagValue += "</td>";

                if (nDiv < nNumOfPages / 20)
                {
                    strGeneratedTagValue += "<td>";
                    strGeneratedTagValue += "<a href=\"" + ContainerPage + strPageID + "=" + ((nDiv + 1) * 20 + 1).ToString() + strAllQueryString + "\">";
                    strGeneratedTagValue += "<img src=\"" + ImagePath + "/next.gif\" style=\"border:1px solid;cursor:pointer;\"></a>";
                    strGeneratedTagValue += "<a class=\"bottonend\" href=\"" + ContainerPage + strPageID + "=" + nNumOfPages + strAllQueryString + "\">";
                    strGeneratedTagValue += "<img src=\"" + ImagePath + "/player_end.png\"  class=\"startend\" style=\"cursor:pointer;\"></a>";
                    strGeneratedTagValue += "</td>";
                }
                else
                {
                    strGeneratedTagValue += "<td>";
                    strGeneratedTagValue += "<img src=\"" + ImagePath + "/next_gray.png\" style=\"border:1px solid;\">";
                    strGeneratedTagValue += "<img src=\"" + ImagePath + "/player_end_gray.png\" class=\"startend\">";
                    strGeneratedTagValue += "</td>";
                }
                strGeneratedTagValue += "</tr></table>";
            }
        }

        public static void BuildPostbackPager(int nNumOfPages, int nPage, out string strGeneratedTagValue)
        {
            BuildPostbackPager(nNumOfPages, nPage, "", out strGeneratedTagValue);
        }

        public static void BuildPostbackPager(int nNumOfPages, int nPage, string jsFunctionName, out string strGeneratedTagValue)
        {
            strGeneratedTagValue = "";

            if (nNumOfPages > 1)
            {
                strGeneratedTagValue += "<table  class=\"cssPaging\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"cssPager\"><tr>";
                if (nPage != 1)
                {
                    if ((jsFunctionName != null) && (jsFunctionName != ""))
                        strGeneratedTagValue += "<td class=\"cssPaging\" ><a class=\"cssPaging\" href=\"javascript:{if(" + jsFunctionName + "()) __doPostBack('LTDPager','" + (nPage - 1).ToString() + "');}\">";
                    else
                        strGeneratedTagValue += "<td class=\"cssPaging\" ><a class=\"cssPaging\" href=\"javascript:__doPostBack('LTDPager','" + (nPage - 1).ToString() + "');\">";
                    strGeneratedTagValue += "<img src=\"" + ImagePath + "/move-prev.gif\" border=\"0\"></a></td>";
                }
                else
                {
                    strGeneratedTagValue += "<td class=\"cssPaging\" ><img src=\"" + ImagePath + "/move-prev.gif\" border=\"0\"></td>";
                }
                strGeneratedTagValue += "<td>&nbsp;";
                int nCount = 0;
                for (int i = 1; i <= nNumOfPages; i++)
                {
                    nCount++;
                    if (i != nPage)
                    {
                        if ((jsFunctionName != null) && (jsFunctionName != ""))
                            strGeneratedTagValue += "<a class=\"cssPaging\" href=\"javascript:{if(" + jsFunctionName + "()) __doPostBack('LTDPager','" + i.ToString() + "');}\">";
                        else
                            strGeneratedTagValue += "<a class=\"cssPaging\" href=\"javascript:__doPostBack('LTDPager','" + i.ToString() + "');\">";
                        strGeneratedTagValue += i.ToString() + "</a>&nbsp;";
                    }
                    else
                    {
                        strGeneratedTagValue += i.ToString() + "&nbsp;";
                    }
                    if (nCount == 40)
                    {
                        strGeneratedTagValue += "<br>";
                        nCount = 0;
                    }
                }
                strGeneratedTagValue += "</td>";

                if (nPage != nNumOfPages)
                {
                    if ((jsFunctionName != null) && (jsFunctionName != ""))
                        strGeneratedTagValue += "<td class=\"cssPaging\" ><a class=\"cssPaging\" href=\"javascript:{if(" + jsFunctionName + "()) __doPostBack('LTDPager','" + (nPage + 1).ToString() + "');}\">";
                    else
                        strGeneratedTagValue += "<td class=\"cssPaging\" ><a class=\"cssPaging\" href=\"javascript:__doPostBack('LTDPager','" + (nPage + 1).ToString() + "');\">";
                    strGeneratedTagValue += "<img src=\"" + ImagePath + "/move-next.gif\" border=\"0\"></a></td>";
                }
                else
                {
                    strGeneratedTagValue += "<td class=\"cssPaging\" ><img src=\"" + ImagePath + "/move-next.gif\" border=\"0\"></td>";
                }
                strGeneratedTagValue += "</tr></table>";
            }
        }

        /*
         * Ham kiem tra kieu file upload
         * Nguoi viet: Phung Nam Thang
         * Ngay viet: 19/3/08
         */

        public static bool CheckFileUpLoad(string fileName)
        {

            string ext = Path.GetExtension(fileName.ToLower());
            string extFileAllow = ".doc,.pdf,.xsl,.zip,.rar,.jpg,.txt";
            string extFileProhibit = ".exe,.com";
            if (extFileProhibit.Contains(ext)) return false;
            return true;
            //if (extFileAllow.Contains(ext)) return true;
            //else return false;                
        }

        /*
         * Ham chuyen xau dang ma MD5
         * Nguoi viet: Phung Nam Thang
         * Ngay viet: 19/3/08
         */
        public static string MD(string originalPassword)
        {
            //Khai bao
            Byte[] originalBytes;
            Byte[] encodedBytes;
            MD5 md5;

            //Instantiate MD5CryptoServiceProvider, get bytes for original password and compute hash (encoded password)
            md5 = new MD5CryptoServiceProvider();
            originalBytes = ASCIIEncoding.Default.GetBytes(originalPassword);
            encodedBytes = md5.ComputeHash(originalBytes);

            //Convert encoded bytes back to a 'readable' string
            return BitConverter.ToString(encodedBytes);
        }
        /*
         * Ham kiem tra dinh danh Email
         * Nguoi viet: Phung Nam Thang
         * Ngay viet: 10/4/08
         */
        public static bool IsValidEmail(string email)
        {
            //regular expression pattern for valid email
            //addresses, allows for the following domains:
            //com,edu,info,gov,int,mil,net,org,biz,name,museum,coop,aero,pro,tv
            //string pattern = @"^[-a-zA-Z0-9][-.a-zA-Z0-9]*@[-.a-zA-Z0-9]+(\.[-.a-zA-Z0-9]+)*\.(com|edu|info|gov|int|mil|net|org|biz|name|museum|coop|aero|pro|tv|[a-zA-Z]{2})$";
            string pattern = @"^\b[-a-zA-Z0-9._%+-]+@[-.a-zA-Z0-9]+(\.[-.a-zA-Z0-9]+)*\.(com|edu|info|gov|int|mil|net|org|biz|name|museum|coop|aero|pro|tv|[a-zA-Z]{2})$";
            //Regular expression object
            Regex check = new Regex(pattern, RegexOptions.IgnorePatternWhitespace);
            //boolean variable to return to calling method
            bool valid = false;

            //make sure an email address was provided
            if (string.IsNullOrEmpty(email))
            {
                valid = false;
            }
            else
            {
                //use IsMatch to validate the address
                valid = check.IsMatch(email);
            }
            //return the value to the calling method
            return valid;
        }

        public static DateTime ParseDateTime(string strDateTime, string strFormat)
        {
            //string strFormat = "MM/dd/yyyy";
            //strFormat = GV.GetContextValue("date", "format");
            if ((strFormat == null) || (strFormat == "")) strFormat = "MM/dd/yyyy";

            DateTime retVal = DateTime.MinValue;
            if (strFormat.StartsWith("d", true, System.Globalization.CultureInfo.CurrentCulture))
            {
                IFormatProvider culture = new CultureInfo("fr-FR");
                retVal = DateTime.Parse(strDateTime, culture);
            }
            else
            {
                IFormatProvider culture = new CultureInfo("en-US");
                retVal = DateTime.Parse(strDateTime);
            }

            return retVal;
        }
        public static string UnicodeToPlain(string strEncode)
        {
            string oStr = null;
            int p1 = 0;
            int p2 = 0;
            p2 = strEncode.Length;
            p1 = 0;
            oStr = "";
            while (p1 < p2)
            {
                switch (strEncode.Substring(p1, 1))
                {
                    case "à":
                    case "á":
                    case "ạ":
                    case "ả":
                    case "ã":
                    case "ă":
                    case "ằ":
                    case "ắ":
                    case "ẳ":
                    case "ặ":
                    case "ẵ":
                    case "â":
                    case "ầ":
                    case "ấ":
                    case "ẩ":
                    case "ẫ":
                    case "ậ":
                        oStr += "a";
                        break;
                    case "À":
                    case "Á":
                    case "Ạ":
                    case "Ả":
                    case "Ã":
                    case "Ă":
                    case "Ằ":
                    case "Ắ":
                    case "Ẳ":
                    case "Ặ":
                    case "Ẵ":
                    case "Â":
                    case "Ầ":
                    case "Ấ":
                    case "Ẩ":
                    case "Ẫ":
                    case "Ậ":
                        oStr += "A";
                        break;
                    case "è":
                    case "é":
                    case "ẹ":
                    case "ẻ":
                    case "ẽ":
                    case "ê":
                    case "ề":
                    case "ế":
                    case "ể":
                    case "ệ":
                    case "ễ":
                        oStr += "e";
                        break;
                    case "È":
                    case "É":
                    case "Ẹ":
                    case "Ẻ":
                    case "Ẽ":
                    case "Ê":
                    case "Ề":
                    case "Ế":
                    case "Ể":
                    case "Ệ":
                    case "Ễ":
                        oStr += "E";
                        break;
                    case "ò":
                    case "ó":
                    case "ọ":
                    case "ỏ":
                    case "õ":
                    case "ơ":
                    case "ờ":
                    case "ớ":
                    case "ở":
                    case "ợ":
                    case "ỡ":
                    case "ô":
                    case "ồ":
                    case "ố":
                    case "ổ":
                    case "ộ":
                    case "ỗ":
                        oStr += "o";
                        break;
                    case "Ò":
                    case "Ó":
                    case "Ọ":
                    case "Ỏ":
                    case "Õ":
                    case "Ơ":
                    case "Ờ":
                    case "Ớ":
                    case "Ở":
                    case "Ợ":
                    case "Ỡ":
                    case "Ô":
                    case "Ồ":
                    case "Ố":
                    case "Ổ":
                    case "Ộ":
                    case "Ỗ":
                        oStr += "O";
                        break;
                    case "ù":
                    case "ú":
                    case "ụ":
                    case "ủ":
                    case "ũ":
                    case "ư":
                    case "ừ":
                    case "ứ":
                    case "ử":
                    case "ự":
                    case "ữ":
                        oStr += "u";
                        break;
                    case "Ù":
                    case "Ú":
                    case "Ụ":
                    case "Ủ":
                    case "Ũ":
                    case "Ư":
                    case "Ừ":
                    case "Ứ":
                    case "Ử":
                    case "Ự":
                    case "Ữ":
                        oStr += "U";
                        break;
                    case "ỳ":
                    case "ý":
                    case "ỵ":
                    case "ỷ":
                    case "ỹ":
                        oStr += "y";
                        break;
                    case "Ỳ":
                    case "Ý":
                    case "Ỵ":
                    case "Ỷ":
                    case "Ỹ":
                        oStr += "Y";
                        break;
                    case "ì":
                    case "í":
                    case "ị":
                    case "ỉ":
                    case "ĩ":
                        oStr += "i";
                        break;
                    case "Ì":
                    case "Í":
                    case "Ị":
                    case "Ỉ":
                    case "Ĩ":
                        oStr += "I";
                        break;
                    case "đ":
                        oStr += "d";
                        break;
                    case "Đ":
                        oStr += "D";
                        break;
                    default:
                        oStr += strEncode.Substring(p1, 1);
                        break;
                }
                p1 = p1 + 1;
            }
            return oStr;
        }

        public static void BuildAphabetSearch(System.Web.HttpRequest Request, string ContainerPage, string strLetterKey, string strChar, string strExcluded, out string strGeneratedTagValue)
        {
            string strAllQueryString = "";
            strGeneratedTagValue = "";
            foreach (string strKey in Request.QueryString.AllKeys)
            {
                if ((strKey != "page_number") && (strKey != strExcluded) && (strKey != strLetterKey) && (ContainerPage.IndexOf("?" + strKey) < 0) && (ContainerPage.IndexOf("&" + strKey) < 0))
                    strAllQueryString = strAllQueryString + "&" + strKey + "=" + System.Web.HttpUtility.UrlEncode(Request.QueryString[strKey].ToString());
            }
            // Response.Write(strAllQueryString);


            if (ContainerPage.IndexOf("?") > 0)
                strLetterKey = "&" + strLetterKey;
            else
                strLetterKey = "?" + strLetterKey;

            strGeneratedTagValue += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"cssPagerByChar\"><tr>";

            strGeneratedTagValue += "<td>&nbsp;";
            string strAlphaBet = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
            string[] arrAlphaBet = strAlphaBet.Split(',');
            for (int i = 0; i < arrAlphaBet.Length; i++)
            {
                if (strChar != arrAlphaBet[i].ToString())
                {
                    strGeneratedTagValue += "<a href=\"" + ContainerPage + strLetterKey + "=" + arrAlphaBet[i].ToString() + strAllQueryString + "\"><span>";
                    strGeneratedTagValue += arrAlphaBet[i].ToString() + "</span></a>";
                }
                else
                    strGeneratedTagValue += "<span>" + arrAlphaBet[i].ToString() + "<span>";

            }
            strGeneratedTagValue += "<a href=\"" + ContainerPage + strLetterKey + "=%" + strAllQueryString + "\"><span id='slAll'> - All</span></a>";
            strGeneratedTagValue += "</td>";
            strGeneratedTagValue += "</tr></table>";
        }

        public static void GetAllQueryString(System.Web.HttpRequest Request, string strMoreQueryString, string strExcluded, out string strGeneratedValue)
        {
            string strAllQueryString = "";
            strGeneratedValue = "";
            foreach (string strKey in Request.QueryString.AllKeys)
            {
                bool bCheck = true;
                if (strExcluded.Length > 0)
                {
                    string[] arrExcluded = strExcluded.Split(';');
                    for (int i = 0; i < arrExcluded.Length; i++)
                    {
                        if (strKey.ToLower() == arrExcluded[i].ToString().ToLower())
                        {
                            bCheck = false;
                        }
                    }

                }
                if (bCheck)
                {
                    if (strAllQueryString.Length > 0)
                        strAllQueryString = strAllQueryString + "&" + strKey + "=" + System.Web.HttpUtility.UrlEncode(Request.QueryString[strKey].ToString());
                    else
                        strAllQueryString = strKey + "=" + System.Web.HttpUtility.UrlEncode(Request.QueryString[strKey].ToString());
                }
            }
            if (strMoreQueryString.Length > 0)
            {
                if (strAllQueryString.Length > 0)
                    strAllQueryString += "&" + strMoreQueryString;
                else
                    strAllQueryString = strMoreQueryString;
            }
            if (strAllQueryString.Length > 0)
                strGeneratedValue = "?" + strAllQueryString;
        }

        public static string GetProvinceByTaxCode(string taxCode)
        {
            string retVal = "";
            if (taxCode.Length == 10)
            {
                string vCode = taxCode.Substring(0, 2);
                switch (vCode)
                {
                    case "16":
                        retVal = "An Giang";
                        break;
                    case "35":
                        retVal = "Ba Ria Vung Tau";
                        break;
                    case "47":
                        retVal = "Bac Can";
                        break;
                    case "24":
                        retVal = "Bac Giang";
                        break;
                    case "19":
                        retVal = "Bac Lieu";
                        break;
                    case "23":
                        retVal = "Bac Ninh";
                        break;
                    case "13":
                        retVal = "Ben Tre";
                        break;
                    case "41":
                        retVal = "Binh Dinh";
                        break;
                    case "37":
                        retVal = "Binh Duong";
                        break;
                    case "38":
                        retVal = "Binh Phuoc";
                        break;
                    case "34":
                        retVal = "Binh Thuan";
                        break;
                    case "20":
                        retVal = "Ca Mau";
                        break;
                    case "18":
                        retVal = "Can Tho";
                        break;
                    case "48":
                        retVal = "Cao Bang";
                        break;
                    case "04":
                        retVal = "Da Nang";
                        break;
                    case "60":
                        retVal = "Dak Lak";
                        break;
                    case "64":
                        retVal = "Dak Nong";
                        break;
                    case "56":
                        retVal = "Dien Bien";
                        break;
                    case "36":
                        retVal = "Dong Nai";
                        break;
                    case "14":
                        retVal = "Dong Thap";
                        break;
                    case "59":
                        retVal = "Gia Lai";
                        break;
                    case "51":
                        retVal = "Ha Giang";
                        break;
                    case "07":
                        retVal = "Ha Nam";
                        break;
                    case "01":
                    case "05":
                        retVal = "Ha Noi";
                        break;
                    case "30":
                        retVal = "Hà Tinh";
                        break;
                    case "08":
                        retVal = "Hai Duong";
                        break;
                    case "02":
                        retVal = "Hai Phong";
                        break;
                    case "63":
                        retVal = "Hau Giang";
                        break;
                    case "03":
                        retVal = "Ho Chi Minh";
                        break;
                    case "54":
                        retVal = "Hoa Binh";
                        break;
                    case "09":
                        retVal = "Hung Yen";
                        break;
                    case "42":
                        retVal = "Khanh Hoa";
                        break;
                    case "17":
                        retVal = "Kien Giang";
                        break;
                    case "61":
                        retVal = "Kon Tum";
                        break;
                    case "62":
                        retVal = "Lai Chau";
                        break;
                    case "58":
                        retVal = "Lam Dong";
                        break;
                    case "49":
                        retVal = "Lang Son";
                        break;
                    case "53":
                        retVal = "Lao Cai";
                        break;
                    case "11":
                        retVal = "Long An";
                        break;
                    case "06":
                        retVal = "Nam Dinh";
                        break;
                    case "29":
                        retVal = "Nghe An";
                        break;
                    case "27":
                        retVal = "Ninh Binh";
                        break;
                    case "45":
                        retVal = "Ninh Thuan";
                        break;
                    case "26":
                        retVal = "Phu Tho";
                        break;
                    case "44":
                        retVal = "Phu Yen";
                        break;
                    case "31":
                        retVal = "Quang Binh";
                        break;
                    case "40":
                        retVal = "Quang Nam";
                        break;
                    case "43":
                        retVal = "Quang Ngai";
                        break;
                    case "57":
                        retVal = "Quang Ninh";
                        break;
                    case "32":
                        retVal = "Quang Tri";
                        break;
                    case "22":
                        retVal = "Soc Trang";
                        break;
                    case "55":
                        retVal = "Son La";
                        break;
                    case "39":
                        retVal = "Tay Ninh";
                        break;
                    case "10":
                        retVal = "Thai Binh";
                        break;
                    case "46":
                        retVal = "Thai Nguyen";
                        break;
                    case "28":
                        retVal = "Thanh Hoa";
                        break;
                    case "33":
                        retVal = "Thua Thien Hue";
                        break;
                    case "12":
                        retVal = "Tien Giang";
                        break;
                    case "21":
                        retVal = "Tra Vinh";
                        break;
                    case "50":
                        retVal = "Tuyen Quang";
                        break;
                    case "15":
                        retVal = "Vinh Long";
                        break;
                    case "25":
                        retVal = "Vinh Phuc";
                        break;
                    case "52":
                        retVal = "Yen Bai";
                        break;

                }
            }
            return retVal;

        }

        public static string GetActiveTypeByCodeType(string codeType)
        {
            string retVal = codeType;
            if (codeType.Length > 0)
            {
                switch (codeType.ToUpper())
                {
                    case "A11":
                        retVal = "Nhập kinh doanh tiêu dùng";
                        break;
                    case "A12":
                        retVal = "Nhập kinh doanh sản xuất";
                        break;
                    case "A21":
                        retVal = "Chuyển tiêu thụ nội địa từ nguồn tạm nhập";
                        break;
                    case "A31":
                        retVal = "Nhập hàng xuất khẩu bị trả lại";
                        break;
                    case "A41":
                        retVal = "Nhập kinh doanh của doanh nghiệp đầu tư ";
                        break;
                    case "A42":
                        retVal = "Chuyển tiêu thụ nội địa khác";
                        break;
                    case "A43":
                        retVal = "Dự phòng";
                        break;
                    case "A44":
                        retVal = "Dự phòng";
                        break;
                    case "E11":
                        retVal = "Nhập nguyên liệu của doanh nghiệp chế xuất ";
                        break;
                    case "E13":
                        retVal = "Nhập tạo tài sản cố định của doanh nghiệp chế xuất";
                        break;
                    case "E15":
                        retVal = "Nhập nguyên liệu của doanh nghiệp chế xuất từ nội địa";
                        break;
                    case "E21":
                        retVal = "Nhập nguyên liệu để gia công cho thương nhân nước ngoài";
                        break;
                    case "E23":
                        retVal = "Nhập nguyên liệu gia công từ hợp đồng khác chuyển sang";
                        break;
                    case "E25":
                        retVal = "Dự phòng";
                        break;
                    case "E31":
                        retVal = "Nhập nguyên liệu sản xuất xuất khẩu";
                        break;
                    case "E33":
                        retVal = "Dự phòng";
                        break;
                    case "E41":
                        retVal = "Nhập sản phẩm thuê gia công ở nước ngoài";
                        break;
                    case "G11":
                        retVal = "Tạm nhập hàng kinh doanh tạm nhập tái xuất";
                        break;
                    case "G12":
                        retVal = "Tạm nhập máy móc, thiết bị phục vụ thực hiện các dự án có thời hạn";
                        break;
                    case "G13":
                        retVal = "Tạm nhập hàng miễn thuế";
                        break;
                    case "G14":
                        retVal = "Tạm nhập khác";
                        break;
                    case "G51":
                        retVal = "Tái nhập hàng đã tạm xuất";
                        break;
                    case "C11":
                        retVal = "Hàng gửi kho ngoại quan";
                        break;
                    case "C21":
                        retVal = "Hàng đưa vào khu phi thuế quan";
                        break;
                    case "H11":
                        retVal = "Loại khác";
                        break;
                    case "B11":
                        retVal = "Xuất kinh doanh; xuất khẩu của doanh ngiệp đầu tư";
                        break;
                    case "B12":
                        retVal = "Xuất sau khi đã tạm xuất";
                        break;
                    case "B13":
                        retVal = "Xuất trả hàng đã nhập khẩu";
                        break;
                    case "E42":
                        retVal = "Xuất sản phẩm của doanh nghiệp chế xuất";
                        break;
                    case "E44":
                        retVal = "Dự phòng";
                        break;
                    case "E46":
                        retVal = "Hàng của doanh nghiệp chế xuất vào nội địa để gia công";
                        break;
                    case "E52":
                        retVal = "Xuất sản phẩm gia công cho thương nhân nước ngoài";
                        break;
                    case "E54":
                        retVal = "Xuất nguyên liệu gia công sang hợp đồng khác";
                        break;
                    case "E56":
                        retVal = "Xuất sản phẩm gia công vào nội địa";
                        break;
                    case "E62":
                        retVal = "Xuất sản phẩm sản xuất xuất khẩu";
                        break;
                    case "E82":
                        retVal = "Xuất nguyên liệu thuê gia công ở nước ngoài";
                        break;
                    case "G21":
                        retVal = "Tái xuất hàng kinh doanh tạm nhập tái xuất";
                        break;
                    case "G22":
                        retVal = "Tái xuất thiết bị, máy móc thuê phục vụ dự án có thời hạn";
                        break;
                    case "G23":
                        retVal = "Tái xuất hàng miễn thuế tạm nhập";
                        break;
                    case "G24":
                        retVal = "Tái xuất khác";
                        break;
                    case "G61":
                        retVal = "Tạm xuất hàng hóa";
                        break;
                    case "C12":
                        retVal = "Hàng xuất kho ngoại quan";
                        break;
                    case "C22":
                        retVal = "Hàng đưa ra khỏi Khu phi thuế quan";
                        break;
                    case "AEO":
                        retVal = "Doanh nghiệp ưu tiên AEO";
                        break;
                    case "H21":
                        retVal = "Loại hình khác";
                        break;
                }
            }
            return retVal;
        }

        public static string GetUnitNameByCode(string unitCode)
        {
            string retVal = unitCode;
            switch (unitCode.ToUpper())
            {
                case "DUNK":
                    retVal = "10 BAO";
                    break;
                case "DPCE":
                    retVal = "10 chiếc";
                    break;
                case "DMTR":
                    retVal = "10 mét";
                    break;
                case "HPCE":
                    retVal = "100 chiếc";
                    break;
                case "HFT":
                    retVal = "100 FT";
                    break;
                case "HGRM":
                    retVal = "100 GRAMME";
                    break;
                case "HMTR":
                    retVal = "100 mét";
                    break;
                case "HUNV":
                    retVal = "100 viên/hạt";
                    break;
                case "KSET":
                    retVal = "1000 bộ/hệ thống";
                    break;
                case "KPCE":
                    retVal = "1000 cái/chiếc";
                    break;
                case "KUNC":
                    retVal = "1000 con";
                    break;
                case "KROL":
                    retVal = "1000 cuộn";
                    break;
                case "KPR":
                    retVal = "1000 đôi/cặp";
                    break;
                case "KPKG":
                    retVal = "1000 gói";
                    break;
                case "KUNK":
                    retVal = "1000 kiện/hộp/bao";
                    break;
                case "KMTK":
                    retVal = "1000 M2";
                    break;
                case "KPIP":
                    retVal = "1000 ống";
                    break;
                case "KUNQ":
                    retVal = "1000 quả";
                    break;
                case "KPRO":
                    retVal = "1000 sản phẩm";
                    break;
                case "KUNV":
                    retVal = "1000 viên";
                    break;
                case "KMTQ":
                    retVal = "1000m2";
                    break;
                case "ONZ":
                    retVal = "Ao/xơ ";
                    break;
                case "OII":
                    retVal = "Ao/xơ (gồm bao bì)";
                    break;
                case "OIC":
                    retVal = "Ao/xơ (gồm cont.) ";
                    break;
                case "OMC":
                    retVal = "Ao/xơ (hàm lượng KL)";
                    break;
                case "ODW":
                    retVal = "Ao/xơ (trọng lg khô)";
                    break;
                case "OZI":
                    retVal = "Ao/xơ đong";
                    break;
                case "BAN":
                    retVal = "Bản";
                    break;
                case "BANG":
                    retVal = "Bảng";
                    break;
                case "BBL":
                    retVal = "Barrel";
                    break;
                case "BICH":
                    retVal = "Bịch";
                    break;
                case "SET":
                    retVal = "Bộ";
                    break;
                case "PCE":
                    retVal = "Cái/Chiếc";
                    break;
                case "UNH":
                    retVal = "Cành";
                    break;
                case "CT":
                    retVal = "Cara";
                    break;
                case "UNY":
                    retVal = "Cây";
                    break;
                case "CEN":
                    retVal = "Cen ti mét";
                    break;
                case "UNA":
                    retVal = "Chai/ Lọ/ Tuýp";
                    break;
                case "CHI":
                    retVal = "CHI";
                    break;
                case "CM2":
                    retVal = "cm2";
                    break;
                case "CM3":
                    retVal = "cm3";
                    break;
                case "UNC":
                    retVal = "Con";
                    break;
                case "CONT":
                    retVal = "CONTAINER";
                    break;
                case "UNU":
                    retVal = "Củ";
                    break;
                case "CUC":
                    retVal = "Cục";
                    break;
                case "CUM":
                    retVal = "Cụm";
                    break;
                case "UNN":
                    retVal = "Cuốn";
                    break;
                case "ROL":
                    retVal = "Cuộn";
                    break;
                case "DM":
                    retVal = "dm";
                    break;
                case "DM2":
                    retVal = "dm2";
                    break;
                case "PR":
                    retVal = "Đôi/Cặp";
                    break;
                case "GLL":
                    retVal = "Galông ruợu";
                    break;
                case "GRM":
                    retVal = "Gam";
                    break;
                case "GII":
                    retVal = "Gam (gồm bao bì)";
                    break;
                case "GIC":
                    retVal = "Gam (gồm container)";
                    break;
                case "GMC":
                    retVal = "Gam (hàm lượng KL)";
                    break;
                case "GDW":
                    retVal = "Gam (trọng lg khô)";
                    break;
                case "PKG":
                    retVal = "Gói";
                    break;
                case "LC":
                    retVal = "Hàm luợng lactoza";
                    break;
                case "HLTR":
                    retVal = "Hectolit";
                    break;
                case "YRD":
                    retVal = "I/át";
                    break;
                case "YDQ":
                    retVal = "I/át khối";
                    break;
                case "YDK":
                    retVal = "I/át vuông";
                    break;
                case "INC":
                    retVal = "Inch";
                    break;
                case "UNK":
                    retVal = "Kiện/Hộp/Bao/Gói";
                    break;
                case "KL":
                    retVal = "Kilo lít";
                    break;
                case "KMTR":
                    retVal = "Kilo mét (1000 mét)";
                    break;
                case "KHW":
                    retVal = "Kilô/oắt giờ";
                    break;
                case "KGM":
                    retVal = "Kilogam";
                    break;
                case "KII":
                    retVal = "Kilogam (gồm bao bì)";
                    break;
                case "KIC":
                    retVal = "Kilogam (gồm cont.)";
                    break;
                case "KMC":
                    retVal = "Kilogam (hàm lg KL)";
                    break;
                case "KDW":
                    retVal = "Kilogam (tr.lg khô)";
                    break;
                case "KIT":
                    retVal = "KIT";
                    break;
                case "KVA":
                    retVal = "KVA";
                    break;
                case "LIEU":
                    retVal = "Liều";
                    break;
                case "LTR":
                    retVal = "Lít";
                    break;
                case "QT":
                    retVal = "Lít Anh";
                    break;
                case "LOT":
                    retVal = "Lô (nhiều cái)";
                    break;
                case "UNL":
                    retVal = "Lon/Can";
                    break;
                case "MTR":
                    retVal = "Mét";
                    break;
                case "MTQ":
                    retVal = "Mét khối";
                    break;
                case "MTK":
                    retVal = "Mét vuông";
                    break;
                case "MGRM":
                    retVal = "Mili gram";
                    break;
                case "MLT":
                    retVal = "Mili lít";
                    break;
                case "MMTR":
                    retVal = "Mili mét";
                    break;
                case "MM2":
                    retVal = "mm2";
                    break;
                case "MM3":
                    retVal = "mm3";
                    break;
                case "TH":
                    retVal = "Nghìn";
                    break;
                case "PIP":
                    retVal = "Ống";
                    break;
                case "PTI":
                    retVal = "Panh";
                    break;
                case "LBR":
                    retVal = "Pao";
                    break;
                case "LII":
                    retVal = "Pao (gồm bao bì)";
                    break;
                case "LIC":
                    retVal = "Pao (gồm container) ";
                    break;
                case "LMC":
                    retVal = "Pao (hàm lượng KL)";
                    break;
                case "LDW":
                    retVal = "Pao (trọng lg khô)";
                    break;
                case "FOT":
                    retVal = "Phút";
                    break;
                case "FTQ":
                    retVal = "Phút khối";
                    break;
                case "FTK":
                    retVal = "Phút vuông";
                    break;
                case "UNQ":
                    retVal = "Quả";
                    break;
                case "UNB":
                    retVal = "Quyển/Tập";
                    break;
                case "RAM":
                    retVal = "RAM";
                    break;
                case "SOI":
                    retVal = "Sợi";
                    break;
                case "STER":
                    retVal = "Ster ";
                    break;
                case "DZN":
                    retVal = "Tá";
                    break;
                case "HKGM":
                    retVal = "Tạ (100kg)";
                    break;
                case "TAM":
                    retVal = "Tấm";
                    break;
                case "TNE":
                    retVal = "Tấn";
                    break;
                case "MII":
                    retVal = "Tấn (gồm bao bì)";
                    break;
                case "MIC":
                    retVal = "Tấn (gồm container)";
                    break;
                case "MMC":
                    retVal = "Tấn (hàm lượng KL)";
                    break;
                case "MDW":
                    retVal = "Tấn (trọng lg khô)";
                    break;
                case "LTN":
                    retVal = "Tấn dài";
                    break;
                case "STN":
                    retVal = "Tấn ngắn";
                    break;
                case "UNT":
                    retVal = "Thanh/Mảnh/Miếng";
                    break;
                case "TO":
                    retVal = "Tờ";
                    break;
                case "GRO":
                    retVal = "Tổng trọng lượng";
                    break;
                case "GT":
                    retVal = "Tổng trọng tải";
                    break;
                case "TRO":
                    retVal = "Troi ao/xơ";
                    break;
                case "DPT":
                    retVal = "Trọng tải";
                    break;
                case "BAG":
                    retVal = "Túi";
                    break;
                case "UND":
                    retVal = "Tút";
                    break;
                case "USD":
                    retVal = "USD";
                    break;
                case "UNV":
                    retVal = "Viên/Hạt";
                    break;
                case "UNIT":
                    retVal = "UNIT";
                    break;
                case "LBS":
                    retVal = "LBS";
                    break;
                case "VI":
                    retVal = "Vỉ";
                    break;
            }

            return retVal;

        }

        public static string UppercaseFirst(string s)
        {
            // Check for empty string.
            if (string.IsNullOrEmpty(s))
            {
                return string.Empty;
            }
            // Return char and concat substring.
            return char.ToUpper(s[0]) + s.Substring(1);
        }
    }
}
